//Abstraction.h
#ifndef _ABSTRACTION_H_ 
#define _ABSTRACTION_H_

class AbstractionImp;
class Abstraction 
{ 
public: 
	virtual ~Abstraction();
	virtual void Operation() = 0;
protected: 
	Abstraction();
private:
};

class RefinedAbstraction:public Abstraction 
{ 
public: 
	RefinedAbstraction(AbstractionImp* imp);
	~RefinedAbstraction();
	void Operation();
protected:
private: 
	AbstractionImp* _imp;
};

#endif //~_ABSTRACTION_H_